<?php


echoCSSFile('public/assets/css/common','all.min.css','public/assets/css/compress_css/all.min.css','css',true);
echoUtilsFile('utils-all.js','public/assets/utils/utils-all.min.js');
echo "压缩完成";
function echoUtilsFile($demo_file,$demo_min_file) {
    $content = ''; //合并内容
    $file_list = [
        'public/assets/lib/wow/wow.min.js',
        'public/assets/utils/dateTime.js',
        'public/assets/iconfont/iconfont.js',
        'public/assets/lib/count/count.js',
        'public/assets/utils/utils.js',
        'public/assets/lib/carousel/owl.carousel.min.js',
        'public/assets/utils/share.js',
        'public/assets/api/basic.js'];
    for ($i=0; $i<count($file_list); $i++)
    {
        /*$content = file_get_contents($file_list[$i]).$content;*/
        $content = $file_list[$i].' '.$content;
    }
    // file_put_contents($demo_file,$content);
    $command = "uglifyjs ".$content." -m -c -o ".$demo_min_file;
    exec($command,$array);
    echo "压缩脚本文件中 \n";
}
function echoCSSFile($path,$demo_file,$demo_min_file,$file_ext,$recursive = false) {
    $jarPath = 'yuicompressor-2.4.8.jar'; //压缩工具地址
    /*    $path = 'public/assets/utils';   //目标路径
        $demo_file = 'demo.js'; //输出合并文件的位置
        $demo_min_file = 'demo.min.js';  //输出压缩文件的位置
        $file_ext = 'js'; //文件后缀名*/
    $file_list = []; //文件目录
    $content = ''; //合并内容
    getDirFilesLists($path,$file_list,$recursive,[$file_ext]);
    /*var_dump($file_list);*/
    for ($i=0; $i<count($file_list); $i++)
    {
        if (strpos($file_list[$i], $demo_file) === false && strpos($file_list[$i], 'animate') === false  && strpos($file_list[$i], 'bootstrap') === false) {
            echo $file_list[$i]." \n";
            $content = file_get_contents($file_list[$i]).$content;
        }
    }
    file_put_contents($demo_file,$content);
    $command = "java -jar ".$jarPath." ".$demo_file." > ".$demo_min_file." --charset utf-8";
    exec($command,$array);
    echo "压缩css文件完毕 \n";
}
function echoJSFile($path,$demo_file,$demo_min_file,$file_ext,$recursive = false) {
    /*    $path = 'public/assets/utils';   //目标路径
        $demo_file = 'demo.js'; //输出合并文件的位置
        $demo_min_file = 'demo.min.js';  //输出压缩文件的位置
        $file_ext = 'js'; //文件后缀名*/
    $file_list = []; //文件目录
    $content = ''; //合并内容
    getDirFilesLists($path,$file_list,$recursive,[$file_ext]);
    for ($i=0; $i<count($file_list); $i++)
    {
        /*$content = file_get_contents($file_list[$i]).$content;*/
        $content = $file_list[$i].' '.$content;
    }
    // file_put_contents($demo_file,$content);
    $command = "uglifyjs ".$content." -m -c -o ".$demo_min_file;
    exec($command,$array);
    echo '压缩'.$demo_min_file."文件中 \n";
}
//java -jar yuicompressor-2.4.8.jar demo.js > demo.min.js




/*
 * 获取指定目录下指定文件后缀的函数
 * @$path   文件路径
 * @$ext    文件后缀名，默认为false为不指定，如果指定，请以数组方式传入
 * @$filename   使用时请提前赋值为空数组
 * @$recursive  是否递归查找，默认为false
 * @$baseurl    是否包含路径，默认包含
 */
function getDirFilesLists($path,&$filename,$recursive = false,$ext = false,$baseurl = true){
    if(!$path){
        die('请传入目录路径');
    }
    $resource = opendir($path);
    if(!$resource){
        die('你传入的目录不正确');
    }
    //遍历目录
    while ($rows = readdir($resource)){
        //如果指定为递归查询
        if($recursive) {
            if (is_dir($path . '/' . $rows) && $rows != "." && $rows != "..") {
                getDirFilesLists($path . '/' . $rows, $filename,$resource,$ext,$baseurl);
            } elseif ($rows != "." && $rows != "..") {
                //如果指定后缀名
                if($ext) {
                    //必须为数组
                    if (!is_array($ext)) {
                        die('后缀名请以数组方式传入');
                    }
                    //转换小写
                    foreach($ext as &$v){
                        $v = strtolower($v);
                    }
                    //匹配后缀
                    $file_ext = strtolower(pathinfo($rows)['extension']);
                    if(in_array($file_ext,$ext)){
                        //是否包含路径
                        if($baseurl) {
                            $filename[] = $path . '/' . $rows;
                        }else{
                            $filename[] = $rows;
                        }
                    }
                }else{
                    if($baseurl) {
                        $filename[] = $path . '/' . $rows;
                    }else{
                        $filename[] = $rows;
                    }
                }
            }
        }else{
            //非递归查询
            if (is_file($path . '/' . $rows) && $rows != "." && $rows != "..") {
                if($baseurl) {
                    $filename[] = $path . '/' . $rows;
                }else{
                    $filename[] = $rows;
                }
            }
        }
    }
}
